package com.zlzlib.limiter;

import java.lang.annotation.*;
import java.util.concurrent.TimeUnit;

/**
 * @DateTime: 2023/5/10 16:31
 * @Author zlz
 * @Version 1.0
 */
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
@Documented
public @interface LimitReq {
    /**
     * @return 限流类型
     */
    LimitTypeEnum type() default LimitTypeEnum.redis;

    /**
     * 最大等待时间
     */
    long timeout() default 1000;

    /**
     * 最大等待时间,单位(例:分钟/秒/毫秒) 默认:毫秒
     */
    TimeUnit timeunit() default TimeUnit.MILLISECONDS;

    /**
     * 最多的访问限制次数
     */
    double limitCount() default 1;

    /**
     * 得不到令牌的提示语
     */
    String msg() default "系统繁忙,请稍后再试.";

    /**
     * 资源的key,唯一
     * 作用：不同的接口，不同的流量控制 令牌桶使用
     */
    String key() default "";

    /**
     * @return 匹配入参的下标 默认为不匹配
     */
    int indexParam() default -1;
}
